home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mind Run
/
Mind Run (1991)(Crealude)(FR)(M6)[!][CFI MINDRUM 91148].iso
/
a48.amos
/
a48.amosSourceCode
next >
Wrap
AMOS Source Code
|
2008-12-15
|
25KB
|
758 lines
' A48 18 4 91
Set Buffer 20 : Close Workbench : Close Editor : Hide On
If Exist("CFI:") : Dir$="CFI:" : Else Dir$="GIGUNA:GAMOS/" : End If
'
Dim TPTS(6),ZBUT(28),BBUT(28),ZBI(36),RSV(16,2),H(28),V(28),CPL(8,3)
Dim XB(2),YB(2),Z(36),CUR(12,9,2),GAM$(12),PREF(5),SON(14,6,3),F$(20)
Global TEST,TPTS(),TEMPS,PTS,APTS,NBK,NBI,NB,NBUT,ZBUT(),BBUT(),DIFF
Global BUT$,SG$,SA$,SB$,ZBI(),RSV(),H(),V(),CPL(),XB(),YB(),Z(),CUR(),HCR,VCR
Global BBOULE,XT,YT,XH,YH,XR,YR,BCUR,HCURS,VCURS,XC,YC,XP,YP,CX,CY,SON()
Global BCP,CYCLETAPE,ETAPE,QST,MXETAPE,DIFF,DERANN$,ELTEMPS,GAUCHE
Global DUREE,VITESSE,BZN,MZ,ABANDON,RENOUV$,TSAB,TREN,LANGUE$,TEST$
Global LIGNE,DIT,GAM$(),PREF(),BOUTONS,BOUTONA,BOUTONB,FAITMUSE
Global BOULBK,CRSBK,FLCHBK,CERVBK,BASEBLOCK,F$(),DERBRUIT$
LANGPREF: Data "Ang","Ang","All","Fra","Esp","Ita","","","","","","","Jap"
CLOCK[280,160]
If Screen<>1
PREF(1)=1 : For X=2 To 5 : PREF(X)=0 : Next
Goto LIRE_LES_PREFCDTV
RETOUR:
S$=Str$(RESUL)-" " : If Not(Instr("123456 13",S$)) : PREF(3)=4 : End If
Restore LANGPREF : For X=1 To PREF(3) : Read LANGUE$ : Next
Load Iff "Decors/Entree"+LANGUE$,1 : Flash Off : Double Buffer
Else
Double Buffer : PRENDVAR : Load "BanqueI/Ftdb.abk"
For Y=1 To 4 : METTOTAL["+",TPTS(Y),373,82+24*(Y-1)] : Next
End If : Curs Off
Colour 0,0 : Colour Back 0 : Wait Vbl : View : Hide On
For Y=1 To 4
If TPTS(Y)>99 Then MBK=Length(1) : Load "banqueb/A.Bobentree.abk",1 : Exit
Next
NT=0 : For Y=1 To 4 : For X=0 To 2
If TPTS(Y)>99+60*X
Paste Bob 467-20*X,81+24*(Y-1),MBK+1 : Wait Vbl : Inc NT
End If
Next : Next
CERVOR: Data 404,22,404,44,379,58,353,43,353,43,353,43,353,21,379,7
Restore CERVOR : For N=1 To 6
If NT>2*N-1 Then Read H,V : Paste Bob H,V,MBK+2 : Wait Vbl
Next
Hide On
Limit Mouse
XB(0)=280 : YB(0)=46 : Rem Suite
XB(1)=295 : YB(1)=63 : Rem Help
XB(2)=278 : YB(2)=79 : Rem Encore
BCUR=63 : Rem N� de bob du curseur
XP=282 : YP=4 : APTS=0 : BBOULE=15 : Rem bob des points sur le boulier
XC=253 : YC=177 : Rem compteur d'�tapes
XT=209 : YT=24 : Rem compteur du total
BOULBK=1 : CRSBK=2 : FLCHBK=3 : CERVBK=4 : BASEBLOCK=4 : Rem Blocks de base
BZN=8
Erase 6 : Reserve As Chip Work 6,$FFFF
Reserve As Chip Work 7,32000 : Load "MRbruits/Brt.sbk",7
Wait 50 : DROITE[1,125] : Wait 50 : GAUCHE[1,125] : GAUCHE=True
Do
MXETAPE=40 : CLOCK[280,160] : B$="TitrorP"+LANGUE$ : BANQBI[B$,""]
PARLE["Category",2] : Hide On
'
MZ=1+Rnd(3) : VIDCUR[0]
For Y=1 To 4
CUR(1,Y-1,0)=315 : CUR(1,Y-1,1)=50+24*Y : CUR(1,Y-1,2)=Y
CUR(2,Y-1,0)=315 : CUR(2,Y-1,1)=50+24*Y : CUR(2,Y-1,2)=Y
Next
CUR(0,0,0)=30 : CUR(0,0,1)=60 : CUR(0,0,2)=5
CUR(0,1,0)=30 : CUR(0,1,1)=60 : CUR(0,1,2)=5
CUR(0,2,0)=30 : CUR(0,2,1)=140 : CUR(0,2,2)=6
CUR(0,3,0)=30 : CUR(0,3,1)=140 : CUR(0,3,2)=6
CX=1 : CY=MZ-1 : INICURS[CX,CY] : HCR=2 : VCR=3
X1=169 : If LANGUE$="All" Then X1=138
For X=1 To 5+Rnd(4)
Wait 10 : Add CY,1,0 To 3
Y1=53 : If(LANGUE$="All") and(CY=2) Then Y1=49
Bob 1,X1,Y1+(CY+1)*24,CY+1
Bob BCUR,CUR(1,CY,0),CUR(1,CY,1), : Wait Vbl
Next
ALEAMUS[1] : INETOILE
Do
F=Free : X1=169 : If LANGUE$="All" Then X1=138
CURSEUR[2] : Exit If BOUTONS
If(CX>0) and(MZ<5)
Y1=53 : If(LANGUE$="All") and(MZ=3) : Y1=49 : End If
Bob 1,X1,Y1+MZ*24,MZ : Wait Vbl
End If
If CX>1 and GAUCHE
Amal Off 3 : Bob 3,,,NBK+16 : Amal Off 15 : AJOUR
DROITE[1,125] : GAUCHE=False : Wait 20
INETOILE : INICURS[CX,CY]
End If
If CX<2 and Not(GAUCHE)
Amal Off 3 : Bob 3,,,NBK+16 : Amal Off 15 : AJOUR
GAUCHE[1,125] : GAUCHE=True
INETOILE : INICURS[CX,CY]
End If
Loop : F=Free : ALEAMUS[0]
If(MZ>0) and(MZ<5) : TEST=MZ
BRUITB[100] : Amal Off : Bob BCUR,,,NBK+16 : AJOUR : Put Bob 1
AJOUR : Bob Off : AJOUR : Erase 1 : Erase 2
If Not(GAUCHE) : GAUCHE[1,125] : End If
MATIERES: Data "Memory","Stress","Sounds","Reflex"
Restore MATIERES : For X=1 To TEST : Read TEST$ : Next
'
CLOCK[280,160] : A$="Decors/"+Left$(TEST$,2) : PASSECRAN[A$,1,0,0]
'
Erase 1 : Load "banqueI/Titror"+LANGUE$+".ABK" : Paste Icon 20,48,TEST
Erase 2 : Load "BanqueI/Ftdb.abk" : NBI=Length(2) : Make Icon Mask
METTOTAL["+",TPTS(TEST),XT,YT]
Erase 1 : Erase 2 : BRUIT[0,0,"Zoom"] : Hide On : DIAPHRAGME[2,0]
Screen Close 2 : Screen 0 : Double Buffer : AJOUR
'
A$=Left$(TEST$,2)+Str$(48)-" "+".Amos" : POSEVAR
Screen 7 : Screen To Front 0 : Volume 0
If Exist("DF0:"+A$) : A$="DF0:"+A$ : End If
CLOCK[280,160] : Run A$
'
''''''''''''''' MEMOIRE,STRESS,SONS,REFLEXES ''''''''''''''''
End If
If MZ=5 Then BRUITB[1] : PREFERENCES[0] : MZ=0
If MZ=6
BRUITB[100] : Amal Off : Bob Off : AJOUR
Wait 20 : Erase 1 : Erase 2 : Erase 7 : Auto View Off
Screen Open 2,16,10,Screen Colour,Lowres : Flash Off
Screen To Front 1 : Screen 2 : Get Palette 1 : Wait Vbl : Screen 1
If LANGUE$="Ang" : L$="Ang" : Else L$="Fra" : End If
Load Iff "Decors/A.generique"+L$,0 : Flash Off
BRUIT[0,0,"vent"] : T=Timer+800
Screen To Front 1 : Screen 0 : Fade 1 : Wait 16
Screen To Front 1 : Auto View On : Wait Vbl : View
Screen 1 : Fade 5 : Wait 80
Screen To Front 0 : Wait 10 : Screen 0 : Fade 5 To 2 : Wait 80
Reserve As Chip Work 7,32000 : Load "MRbruits/Brt.sbk",7
Repeat : Until Mouse Key or Timer>T
BRUITB[100] : BRUIT[0,0,"vent"]
Fade 5 : Wait 50 : Screen To Front 1 : Screen 1 : Fade 5 To 2
Wait 82 : Screen Close 2 : Screen Close 0
End If
Loop
'
Procedure INETOILE
ETOILE: Data 17,18,-5,5,36,31,50,18,61,5,77,31,98,26,137,27
Data 143,7,178,5,183,19,227,31,244,5,257,5,286,8
Data 37,63,72,67,95,87,107,112,96,123,103,144,52,121
A$="A 0,(5,4)(6,4)(7,4)(8,4)(9,4)(10,4)(11,4)(12,4)(13,4)(14,4)"
Restore "ETOILE" : For X=1 To 1+Rnd(21) : Read A,B : Next
Channel 3 To Bob 3 : Bob 3,A,B,5 : Wait Vbl
Amal 3,A$ : Amal On 3
End Proc
'
' PROCEDURES GENERALES
'
Procedure CURSEUR[C]
BOUTONA=False : BOUTONB=False : BOUTONS=False
Clear Key
Repeat
Repeat : T1=Timer+50
For X=1 To 10
X=X Mouse : Y=Y Mouse : Wait 3 : U=X Mouse : V=Y Mouse
Exit If X=U and Y=V
Next
X Mouse=150 : Y Mouse=100 : MX0=X Mouse : MY0=Y Mouse : DM=0
Repeat
If Timer>DIT Then MUSE
If C=1 : Rem En cours de question
If Timer>TSAB : TEMPS[1] : TSAB=Timer+49 : End If
If(PTS<1) or(DUREE<1) : MZ=0 : Exit 3 : End If
If Timer>TREN : A=0 : Exit 3 : End If
End If
If C=2 : Rem En menu principal
If Timer>T1
STAR: Data 17,18,-5,5,36,31,50,18,61,5,77,31,98,26,137,27
Data 143,7,178,5,183,19,227,31,244,5,257,5,286,8
Data 37,63,72,67,95,87,107,112,96,123,103,144,52,121
Restore "STAR" : For X=1 To 1+Rnd(21) : Read A,B : Next
Bob 3,A,B, : Wait Vbl : T2=Timer+10+Rnd(20) : T1=T2+200
End If
If Timer>T2
If GAUCHE : Bob 3,400,,
Else Bob 3,100,,
End If : Wait Vbl
T1=Timer+50+50*Rnd(2) : T2=T1+200
End If
End If
MX=X Mouse : MY=Y Mouse : A$=Inkey$
Until A$<>"" or Mouse Key or Abs(MX0-MX)>DM or Abs(MY0-MY)>DM
K=Mouse Key : R=Asc(A$)
A=-28*(MX-MX0>DM)-29*(MX0-MX>DM)-30*(MY0-MY>DM)-31*(MY-MY0>DM)
If(R>27) and(R<32) Then A=R
X=CX : Y=CY
If(A=28) Then Add X,1
If(A=29) Then Add X,-1
If(A=30) Then Add Y,-1
If(A=31) Then Add Y,1
Until((X<0)+(Y<0)+(X>HCR)+(Y>VCR)=0)
If(X<>CX) or(Y<>CY)
If(CUR(X,Y,0)=0) and(CUR(X,Y,1)=0)
If(A=28) or(A=29)
Repeat : Add Y,-1,0 To VCR
Until((CUR(X,Y,0)<>0) or(CUR(X,Y,1)<>0))
End If
If(A=30) or(A=31)
Repeat : Add X,1,0 To HCR
Until((CUR(X,Y,0)<>0) or(CUR(X,Y,1)<>0))
End If
End If
BRUITB[3] : CX=X : CY=Y : Bob BCUR,CUR(CX,CY,0),CUR(CX,CY,1),
Exit If C=2
End If
Until(K>0)+(R=43)+(R=45)+(R=27)+(R=13)
MZ=CUR(CX,CY,2)
BOUTONS=(K>0)+(R=13) : BOUTONA=(K=1)+(K=3)+(R=13) : BOUTONB=(K>1)
End Proc[R]
Procedure INICURS[CX,CY]
Limit Mouse
If Chanan(15) Then Bob BCUR,CUR(CX,CY,0),CUR(CX,CY,1), : Pop Proc
Channel 15 To Bob BCUR : Bob BCUR,CUR(CX,CY,0),CUR(CX,CY,1),NBK+17
Wait Vbl : Amal 15,"A 0,(R1,46)(R2,4)"
Amreg(15,1)=NBK+17 : Amreg(15,2)=NBK+18 : Amal On 15 : Clear Key
End Proc
Procedure VIDCUR[A]
For X=0 To 12 : For Y=0 To 9 : For Z=0 To 2 : CUR(X,Y,Z)=0
Next : Next : Next
If A=1 : Rem situe les trois fl�ches
For I=0 To 2 : CUR(0,I,0)=XB(I) : CUR(0,I,1)=YB(I)
CUR(0,I,2)=I+1 : Next
HCR=1 : VCR=2
End If
End Proc
Procedure PARLE[A$,T]
' Paroles sur voix 0 et 3 (code 9) banque 6
If PREF(1)<1 Then Pop Proc
While Timer<DIT : Wend
B=6 : Rem le num�ro de la banque qui va jouer
F=1 : Rem la voie d'acc�s disque
Volume 9,63 : DERANN$=A$
T$=TEST$ : If T=2 Then T$="General"
SEX$=Mid$("FM",1+Rnd(1),1) : If Instr("JapIta",LANGUE$) Then SEX$="F"
F$="Paroles/"+T$+"/"+LANGUE$+SEX$+"/"+A$
'F$="Paroles/"+T$+"/"+"FraM/"+A$
If Not Exist(F$) Then Pop Proc
Open In F,F$ : L=Lof(F) : Close F : DIT=Timer+L/300
If L>$FFFF Then Pop Proc
Bload F$,Start(6) : Volume %101,63 : Sam Raw %101,102+Start(6),L,20000
If Exist(F$+Chr$(50))
While Timer<DIT : Wend : F$=F$+Chr$(50)
Open In F,F$ : L=Lof(F)
If L>64000 : Bell 60 : Pop Proc : End If
DIT=Timer+L/300 : Close F
Bload F$,Start(6) : Sam Raw %101,102+Start(6),L,20000
End If
If T=1 Then While Timer<DIT : Wend
End Proc
Procedure BRUIT[F,V,A$]
' Bruits sur voix 1 (code 2) (le temps sera sur la voix 2, code 4)
' Banque 6 S=fr�quence V=volume
If PREF(2) Then Pop Proc
While Timer<DIT : Wend : Rem Pause/conflits, utile aussi pour destroypt
S=20000 : If F<>0 Then S=1000*F
Open In 2,"MRbruits/"+A$ : L=Lof(2) : Close 2
If L>65430 Then Bell 20 : Pop Proc
Bload "MRbruits/"+A$,Start(6) : DERBRUIT$=A$
Volume %1010,63 : If V<>0 Then Volume %1010,V
Sam Raw %1010,Start(6)+100,L,S : DIT=Timer+L/400
End Proc
Procedure BRUITB[N]
F=20000 : If N=100 Then N=3 : F=30000
S0=Start(7) : S=Leek(S0+8*N) : L=Leek(S0+8*N+4)
Volume %1010,32 : Sam Raw %1010,S+S0+105,L-105,F
'DIT=Timer+L/400*(1-0.2*Ntsc)
End Proc
Procedure JOUE[V,M$]
If PREF(5) Then Pop Proc
Repeat : Until Mouse Key : Pop Proc
B=10 : Rem le num�ro de la banque qui va jouer (banques 10 et 11)
F=3 : Rem la voie d'acc�s disque
Volume 4,63 : If V=0 Then Volume 4,V
Reserve As Chip Work B,$FFFF : Reserve As Chip Work(21-B),$FFFF
Open In F,"mrmusic/"+M$
Repeat : Pof(F)=0 : L0=Lof(F)
Repeat
S$=Input$(F,Min($FFFF,L0)) : B=21-B
Repeat : Exit If Mouse Key,3 : Until Timer>JOUE
Copy Varptr(S$),Varptr(S$)+Len(S$) To Start(B)
Sam Raw 4,Start(B),Len(S$),20000 : JOUE=Timer+Len(S$)/400
L0=L0-Len(S$)
Until L0<100 or Mouse Key
Until Mouse Key
Close F : Volume 4,0 : Erase B : Erase 21-B : S$="" : F=Free
End Proc
Procedure ALEAMUS[S]
If S=0 Then FAITMUSE=0 : Fill Start(6) To Start(6)+$FFF0,0 : Pop Proc
While Timer<DIT : Wend
FAITMUSE=1 : Bload "mrsons/chorus/A",Start(6)
Add DIT,150
End Proc
Procedure MUSE
If PREF(5)=1 Then Pop Proc
If FAITMUSE=0 Then Pop Proc
'Data 196,207.65,220,233.08,246.94
Data 261.63,277.18,293.66,311.13,329.63,349.23,370,392,415.3
Data 440,466.16,493.88,523.25
N=1+Rnd(11) : Restore : For X=1 To N : Read F : Next : F=20000/392*F
L=25794 : DIT=Timer+50*(L/F)+10+Rnd(60)
VOIX=Rnd(1)+4*Rnd(1) : PEDALE=20+Rnd(40)
Volume VOIX,PEDALE : Sam Raw VOIX,Start(6)+104,L,F
End Proc
Procedure CLIQUE[I]
Amal Off 1 : Bob Off BCUR : Bob Clear : AJOUR
BRUIT[0,0,"Bzz"] : H=XB(I-13) : V=YB(I-13)
Get Block FLCHBK,H,V,40,40,1 : Paste Icon H,V,I : While Mouse Key : Wend
ABLOC[FLCHBK]
End Proc
Procedure AIDE
End Proc
Procedure METTOTAL[D$,N,X0,Y0]
If D$="+" or N>0
U=N mod 10 : N=(N-U)/10
If N>0
D=N mod 10 : N=(N-D)/10
If N>0
C=N mod 10
End If
End If
Paste Icon X0,Y0,27+C : Wait Vbl
Paste Icon X0+13,Y0,27+D : Wait Vbl
Paste Icon X0+26,Y0,27+U : Wait Vbl
Else
Paste Icon X0,Y0,26
Paste Icon X0+13,Y0,26
Paste Icon X0+26,Y0,26 : Paste Icon X0+26,Y0,26
End If
End Proc
Procedure METPOINTS
Every Off
If PTS<0 Then APTS=0 : Pop Proc
If PTS>APTS
For X=Max(1,APTS+1) To PTS
Restore "PT"+Str$(X)-" " : Read H,V : Paste Icon XP+H,YP+V,1
Next
Else
For X=APTS To Max(PTS+1,1) Step -1
Restore "PT"+Str$(X)-" "
Read H,V : H=XP+H : V=YP+V : AUTOBLOC[BOULBK,H,V]
Next
End If
APTS=PTS
End Proc
Procedure DROITE[E,D]
Channel 1 To Screen Offset E : Screen E : Screen To Front E
Amal 1,"M 20,0,5;M R0,0,20;M 20,0,5" : Amreg(1,0)=D : Amal On 1
While Chanmv(1) : Wend : GAUCHE=False
End Proc
Procedure GAUCHE[E,D]
Channel 1 To Screen Offset E : Screen E
Amal 1,"M -20,0,5 ;M R0,0,20;M -20,0,5" : Amreg(1,0)=-D : Amal On 1
While Chanmv(1) : Wend : GAUCHE=True
End Proc
Procedure DIAPHRAGME[A,B]
' montre la moiti� gauche de B arrivant en diaphragme sur A
Autoback 0 : Screen To Front A
For X=1 To 59 Step 2
H0=170-X : H1=170+X : V0=128-X : V1=128+X
Screen Swap : Wait Vbl : Screen Copy B,H0,V0,H1,V1 To A,H0,V0
Next
For X=60 To 130 Step 10
H0=170-X : H1=170+X : V0=128-X : V1=128+X
Screen Swap : Wait Vbl : Screen Copy B,H0,V0,H1,V1 To A,H0,V0
Next
For X=131 To 176 Step 20
H0=170-X : H1=170+X : V0=0 : V1=260
Screen Swap : Wait Vbl : Screen Copy B,H0,V0,H1,V1 To A,H0,V0
Next
Screen To Front B : Screen B : Rem Screen Close A
End Proc
Procedure CLOCK[X,Y]
Change Mouse 3 : X Mouse=X : Y Mouse=Y : Show On
End Proc
Procedure PASSECRAN[A$,E,F,G]
Screen Open 2,360,270,64,Lowres : Flash Off
Get Palette E : Screen To Front E
Screen Copy E,0,0,360,270 To 2,0,0 : Screen Close E
Colour 0,0 : Colour Back 0 : Wait Vbl : View
Load Iff A$,F : Flash Off : Get Palette 2
Screen To Front 2 : Screen F
Colour 0,0 : Colour Back 0 : Wait Vbl : View
If G=1 Then Screen Close 2 : Double Buffer
End Proc
Procedure BANQBI[B$,I$]
Amal Off : Bob Off : AJOUR : Erase 1 : Erase 2
If B$=""
NBK=0 : Load "BanqueB/BoulesC.abk"
Else
Load "BanqueB/"+B$+".abk" : NBK=Length(1) : Load "BanqueB/BoulesC.abk",1
End If
Load "BanqueI/Ftdb.abk"
If I$<>"" Then Load "BanqueI/"+I$+".abk",2
Make Icon Mask
End Proc
Procedure PREFERENCES[CHOIX]
PRFV: Data "voice","sounds","language","speed","music"
PRF1: Data 0,0,6,0,10,7,1,"voice"
PRF2: Data 1,0,69,0,73,7,2,"sounds"
PRF3: Data 1,1,37,15,41,21,3,"Language"
PRF4: Data 0,2,6,30,13,35,8,"speed"
PRF5: Data 1,2,69,30,74,35,9,"music"
DRAPEAUX: Data 3,4,6,0,11,5,0,0,0,0,0,0,7
DIALECTES: Data "Ang","Ang","All","Fra","Esp","Ita","","","","","","","Jap"
SUITE_D_OPTIONS: Data 2,3,4,5,6,13,4,4,4,4,4,4,1
CLOCK[300,150] : B$="A.PeTdbacc" : BANQBI[B$,""] : ZB=Length(1)+1 : TB=10
ECR=Screen : ZCR=4
Screen Open ZCR,112,66,64,Lowres : Flash Off
Screen ZCR : Flash Off : Get Palette ECR : Cls 0
Screen To Front ECR : Screen ZCR : Paste Bob 0,0,TB : Wait Vbl
For X=1 To 5 : Restore "PRF"+Str$(X)-" "
Read A,B,C,D,E,F,Z
If X=3
Restore DRAPEAUX : For XX=1 To PREF(3) : Read Z : Next
If Z=0 : Z=NBK+16 : End If : Paste Bob E,F,Z
Else
If PREF(X) : Paste Bob E,F,Z : End If
End If
Next : Get Bob ZCR,ZB,0,0 To 111,63 : Screen ECR
PARLE["Choose",2] : Hide On
If CHOIX=0 : H=40 : V=73
For Z=1 To 64 Step 2
ZZ=Min(2*Z,112) : Get Bob ZCR,ZB,0,0 To ZZ,Z : Bob 1,H,V,ZB : Wait Vbl
Next
Else
Bob 1,400,10,ZB : Wait Vbl
If CHOIX=1
Limit Bob 1,0,0 To 224,200
Channel 1 To Bob 1 : Bob 1,222,120, : Wait Vbl
Amal 1,"M -112,0,28" : Amal On 1 : While Chanmv(1) : Wend
H=110 : V=120
Else
Limit Bob 1,158,0 To 400,200
Channel 1 To Bob 1 : Bob 1,36,120, : Wait Vbl
Amal 1,"M 112,0,28" : Amal On 1 : While Chanmv(1) : Wend
H=148 : V=120
End If
End If
VIDCUR[0]
For X=1 To 5 : Restore "PRF"+Str$(X)-" "
Read A,B,C,D,E,F,Z : Add E,H : Add F,V
If X=3
Restore DRAPEAUX : For XX=1 To PREF(3) : Read Z : Next
If Z=0 : Z=NBK+16 : End If : Bob X+1,E,F,Z
Else
If PREF(X)
Bob X+1,E,F,Z
Else
Bob X+1,E,F,NBK+16
End If : Wait Vbl
End If
Next : Bob 1,,,TB : Wait Vbl
'
'
VIDCUR[0] : K=0
For X=1 To 5 : Restore "PRF"+Str$(X)-" "
Read A,B,C,D,E,F,Z,P$ : Add C,H : Add D,V
CUR(A,B,0)=C : CUR(A,B,1)=D : CUR(A,B,2)=X : Z(X)=Z
If K<1
Bob BCUR,CUR(A,B,0),CUR(A,B,1),NBK+17 : Wait Vbl : PARLE[P$,2]
TEMPS=Timer+50 : Repeat : K=Mouse Key : Until Timer>TEMPS or K>1
End If
Next
While Mouse Key : Wend
HCR=1 : VCR=2 : INICURS[1,1] : L$=LANGUE$
Do
CURSEUR[0] : If BOUTONB Then MZ=0 : BOUTONB=False
Exit If MZ=0 or Not(BOUTONS)
If MZ=3
Restore SUITE_D_OPTIONS : For X=1 To PREF(3) : Read PREF(3) : Next
Restore DIALECTES : For X=1 To PREF(3) : Read LANGUE$ : Next
Restore DRAPEAUX : For X=1 To PREF(3) : Read Z : Next
If Z=0 : Z=NBK+16 : End If
Bob MZ+1,,,Z : Wait Vbl
Else
If PREF(MZ)
Bob MZ+1,,,NBK+16 : PREF(MZ)=0
Else
Bob MZ+1,,,Z(MZ) : PREF(MZ)=1
End If
End If : Wait Vbl
Restore PRFV : For X=1 To MZ : Read P$ : Next : PARLE[P$,2]
While Mouse Key : Wend
Loop
FINDEPREF:
AJOUR : BRUITB[100] : Amal Off 15 : Bob BCUR,,,NBK+16 : Wait Vbl
CX=1 : CY=0
Screen ZCR : Paste Bob 0,0,TB
For X=1 To 5 : Restore "PRF"+Str$(X)-" "
Read A,B,C,D,E,F,Z
If X=3
Restore DRAPEAUX : For XX=1 To PREF(3) : Read Z : Next
If Z=0 : Z=NBK+16 : End If : Paste Bob E,F,Z
Else
If PREF(X) : Paste Bob E,F,Z : End If
End If
Next
Get Bob ZCR,ZB,0,0 To 111,64 : Screen ECR : Bob 1,,,ZB : Wait Vbl
For X=2 To 6 : Bob X,,,NBK+16 : Next
If CHOIX=0 : Screen ZCR
For Z=64 To 1 Step -4
ZZ=Min(2*Z,112)
Get Bob ZCR,ZB,0,0 To ZZ,Z : Screen ECR : Bob 1,40,73,ZB : Wait Vbl
Next
Bob 1,,,NBK+16 : Wait Vbl : Bob Off 1 : Wait Vbl
Else
Channel 1 To Bob 1 : Bob 1,,,Length(1) : Wait Vbl
If CHOIX=1
Amal 1,"M 112,0,28" : Amal On 1 : While Chanmv(1) : Wend
Else
Amal 1,"M -112,0,28" : Amal On 1 : While Chanmv(1) : Wend
End If
End If : Screen Close ZCR
Limit Bob : Amal Off : Bob Off : AJOUR : CLOCK[300,150]
If L$<>LANGUE$
If CHOIX=0
A$="Decors/Entree"+LANGUE$ : PASSECRAN[A$,1,1,1]
End If
If CHOIX=1
Load "banqueI/Titror"+LANGUE$+".ABK" : Paste Icon 20,48,TEST
End If
End If
BANQBI["",""]
End Proc
Procedure AUTOBLOC[N,X,Y]
Update : Update Off : Wait Vbl
Bob Clear : Put Block N,X,Y : Bob Draw : Screen Swap : Wait Vbl
Bob Clear : Put Block N,X,Y : Bob Draw : Screen Swap : Wait Vbl
Update On
End Proc
Procedure ABLOC[N]
Update : Update Off : Wait Vbl
Bob Clear : Put Block N : Bob Draw : Screen Swap : Wait Vbl
Bob Clear : Put Block N : Bob Draw : Screen Swap : Wait Vbl
Update On
End Proc
Procedure AJOUR
Update : Wait Vbl : Update : Wait Vbl
End Proc
Procedure POSEVAR
Screen Open 7,32,10,16,Lowres : Flash Off : Screen Hide 7 : Screen 7
For X=1 To 5 : Doke Phybase(0)+2*(X-1),PREF(X) : Next
For X=1 To 4 : Doke Phybase(0)+8+2*X,TPTS(X) : Next
End Proc
Procedure PRENDVAR
Screen Hide 7 : Screen 7
For X=1 To 5 : PREF(X)=Deek(Phybase(0)+2*(X-1)) : Next
For X=1 To 4 : TPTS(X)=Deek(Phybase(0)+8+2*X) : Next
Data "Ang","Ang","All","Fra","Esp","Ita","","","","","","","Jap"
Restore : For X=1 To PREF(3) : Read LANGUE$ : Next
Screen Close 7
End Proc
Procedure TEMPS[X]
End Proc
'
Procedure XY
X0=0 : Y0=0 : Show On : Limit Mouse
Repeat
X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
If X<>X0 or Y<>Y0
Locate 35,1 : Print X;" " : Locate 35,2 : Print Y;" "
X0=X : Y0=Y
End If
K$=Inkey$ : Exit If K$<>""
Until Mouse Key
End Proc
Procedure VOIR
Pop Proc
Pen 21 : Locate 35,1 : Print X
Shoot : Do : Loop
End Proc
'''''''''''''''''''''''''''''''''''''
LIRE_LES_PREFCDTV:
'----------------------------------------------------------------------
' Lecture des preferences CDTV
'----------------------------------------------------------------------
'
L=1024 : Gosub INIT_STRUCTURES
'
_CREATE_PORT["",0] : _PORT=Param
'
If _PORT
_CREATEIO[_PORT,48] : _IO=Param
'
If _IO
_OPEN_DEVICE["bookmark.device",BID_CDTVPREFS,_IO,0]
'
If Param=0
PREF$=Space$(12+16)
_DOIOR[_IO,CMD_READ,0,12,Varptr(PREF$)]
If Param=0 : FLAG=True : End If
_CLOSE_DEVICE[_IO]
End If
'
_DELETEIO[_IO]
End If
'
_DELETE_PORT[_PORT]
End If
'
If FLAG
'Print "Display X:";Deek(Varptr(PREF$)+0)
'Print "Display Y:";Deek(Varptr(PREF$)+2)
'Print "Langage :";Deek(Varptr(PREF$)+4)
PREF(3)=Deek(Varptr(PREF$)+4)
'Print "Audiovol :";Deek(Varptr(PREF$)+6)
'Print "Flags :";Deek(Varptr(PREF$)+8)
Else
'Print "L'ouverture du device a echoue!"
PREF(3)=0
End If
'
Goto RETOUR
'-------------------------------------------------------------------------
INIT_STRUCTURES:
'
Global STRUCTURES
Erase 15 : Reserve As Work 15,L
Fill Start(15) To Start(15)+L,0
STRUCTURES=Start(15)
'
' Library offsets
'
Global _LVOOPENDEVICE,_LVOCLOSEDEVICE
Global _LVOADDPORT,_LVOREMPORT
Global _LVOFINDTASK
Global _LVOALLOCSIGNAL,_LVOFREESIGNAL
Global _LVODOIO
_LVOOPENDEVICE=-444 : _LVOCLOSEDEVICE=-450
_LVOADDPORT=-354 : _LVOREMPORT=-360
_LVOFINDTASK=-294
_LVOALLOCSIGNAL=-330 : _LVOFREESIGNAL=-336
_LVODOIO=-456
'
' Node definitions
'
Global _LN_NAME,_LN_PRI,_LN_TYPE
_LN_NAME=$A : _LN_PRI=$9 : _LN_TYPE=$8
'
' Message port
'
Global NT_MSGPORT,MP_MSGLIST,MP_SIGTASK,MP_SIGBIT,MP_FLAGS
Global PA_SIGNAL
NT_MSGPORT=$4 : MP_MSGLIST=$14 : MP_SIGTASK=$10 : MP_SIGBIT=$F : MP_FLAGS=$E
PA_SIGNAL=$0
'
' IO
'
Global MN_REPLYPORT,MN_LENGTH,NT_MESSAGE
Global IO_COMMAND,IO_OFFSET,IO_LENGTH,IO_DATA
'
MN_REPLYPORT=$E : MN_LENGTH=$12 : NT_MESSAGE=$5
IO_COMMAND=28 : IO_OFFSET=44 : IO_LENGTH=36 : IO_DATA=40
'
' CDTV
'
BID_CDTVPREFS=$10001
'
' Device commands
'
Global CMD_READ,CMD_WRITE
CMD_READ=2 : CMD_WRITE=3
'
Return
'-------------------------------------------------------------------------
Procedure _DOIOR[REQ,CMD,OFS,L,D]
Doke REQ+IO_COMMAND,CMD
Loke REQ+IO_OFFSET,OFS
Loke REQ+IO_LENGTH,L
Loke REQ+IO_DATA,D
Areg(1)=REQ
F=Execall(_LVODOIO)
End Proc[F]
Procedure _OPEN_DEVICE[NAME$,UNIT,IO,FLAGS]
NPOKE[NAME$,0] : Areg(0)=Param
Dreg(0)=UNIT
Areg(1)=IO
Dreg(1)=FLAGS
F=Execall(_LVOOPENDEVICE)
End Proc[F]
Procedure _CREATE_PORT[NAME$,PRI]
'
Dreg(0)=-1 : SIGBIT=Execall(_LVOALLOCSIGNAL)
'
If SIGBIT<>-1
'
PRT=STRUCTURES : Add STRUCTURES,34
'
NPOKE[NAME$,PRT+10]
Poke PRT+_LN_TYPE,NT_MSGPORT
Poke PRT+_LN_PRI,PRI
'
_FIND_THIS_TASK : Loke PRT+MP_SIGTASK,Param
Poke PRT+MP_SIGBIT,SIGBIT
Poke PRT+MP_FLAGS,PA_SIGNAL
'
If Leek(PRT+_LN_NAME)
Areg(1)=PRT
F=Execall(_LVOADDPORT)
Else
_NEWLIST[PRT+MP_MSGLIST]
End If
'
End If
'
End Proc[PRT]
Procedure _CREATEIO[PRT,S]
IO=STRUCTURE : Add STRUCTURE,S
Poke IO+_LN_TYPE,NT_MESSAGE
Doke IO+MN_LENGTH,S
Loke IO+MN_REPLYPORT,PRT
End Proc
Procedure _DELETEIO[PRT]
Poke IO+_LN_TYPE,-1
End Proc
Procedure _DELETE_PORT[PRT]
'
If Leek(PRT+_LN_NAME)
Areg(1)=PRT : F=Execall(_LVOREMPORT)
End If
'
Loke PRT+MP_SIGTASK,Leek(PRT+MP_SIGTASK)-1
Dreg(0)=PRT+MP_SIGBIT : F=Execall(_LVOFREESIGNAL)
'
End Proc
Procedure _CLOSE_DEVICE[IO]
Areg(1)=IO
F=Execall(_LVOCLOSEDEVICE)
End Proc[F]
Procedure _NEWLIST[P]
Loke P+4,0
Loke P+8,P
Loke P,P+4
End Proc
Procedure NPOKE[N$,A]
'
If Len(N$)=0 and A<>0
Loke A,0
Else
If A
Loke A,STRUCTURES
Else
A=STRUCTURES
End If
'
For N=1 To Len(N$)
Poke STRUCTURES,Asc(Mid$(N$,N,1)) : Inc STRUCTURES
Next
Poke STRUCTURES,0 : Inc STRUCTURES
'
STRUCTURES=(STRUCTURES+1) and $FFFFFFFE
End If
'
End Proc[A]
Procedure _FIND_THIS_TASK
Areg(1)=0 : F=Execall(_LVOFINDTASK)
End Proc[F]
'-------------------------------------------------------------------------